package com.winsdom.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.winsdom.vo.uniformCharge.*;

import java.util.List;


/**
 * 统一收费服务接口
 */
public interface UnifiedChargingService {

    /**
     * 查询客户待缴与预存余额信息
     * @param pageNum    页码
     * @param pageSize   每页大小
     * @param categoryId 收费类别ID
     * @return 分页结果
     */
    Page<ChargingInformationVO> search(int pageNum,int pageSize, int categoryId);

    /**
     * 查询缴费历史信息
     * @param pageNum       页码
     * @param pageSize      每页大小
     * @param categoryId    收费类别ID
     * @param customerName  客户名称
     * @param invoiceNumber 发票号码
     * @return 分页结果
     */
    Page<PaymentHistoryVO> searchHistory(int pageNum, int pageSize, int categoryId, String customerName, String invoiceNumber);

    /**
     * 应收详情
     * @param customerId
     * @return
     */
    List<BillingResponseVO> receive(Integer customerId);

    ChargeResponseVO confirmPayment(ChargeRequestDTO chargeRequest);

    List<BillingVO> getBillingDetailsByIds(List<Integer> detailIds);

    /**
     * 开始收费
     */
    StartChargeVO startCharge(List<Integer> detailIds,Integer customerId);

    AllChargeItemsResponseVO getAllChargeItemsWithDetails();

    InvoiceInfoResponseVO getInvoiceInfoByCustomerId(Long customerId);
}
